<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>CallGraph (Closure Compiler)</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="CallGraph (Closure Compiler)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../com/google/javascript/jscomp/ByPathWarningsGuard.html" title="class in com.google.javascript.jscomp"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../com/google/javascript/jscomp/CallGraph.Callsite.html" title="class in com.google.javascript.jscomp"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?com/google/javascript/jscomp/CallGraph.html" target="_top">Frames</a></li>
<li><a href="CallGraph.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested_class_summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">com.google.javascript.jscomp</div>
<h2 title="Class CallGraph" class="title">Class CallGraph</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>com.google.javascript.jscomp.CallGraph</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../com/google/javascript/jscomp/CompilerPass.html" title="interface in com.google.javascript.jscomp">CompilerPass</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="strong">CallGraph</span>
extends java.lang.Object
implements <a href="../../../../com/google/javascript/jscomp/CompilerPass.html" title="interface in com.google.javascript.jscomp">CompilerPass</a></pre>
<div class="block">A pass the uses a <code>DefinitionProvider</code> to compute a call graph for an
 AST.

 <p>A <a href="../../../../com/google/javascript/jscomp/CallGraph.html" title="class in com.google.javascript.jscomp"><code>CallGraph</code></a> connects <a href="../../../../com/google/javascript/jscomp/CallGraph.Function.html" title="class in com.google.javascript.jscomp"><code>CallGraph.Function</code></a>s to <a href="../../../../com/google/javascript/jscomp/CallGraph.Callsite.html" title="class in com.google.javascript.jscomp"><code>CallGraph.Callsite</code></a>s and
 vice versa: each function in the graph links to the callsites it contains and
 each callsite links to the functions it could call. Similarly, each callsite
 links to the function that contains it and each function links to the
 callsites that could call it.

 <p>The callgraph is not precise. That is, a callsite may indicate it can
 call a function when in fact it does not do so in the running program.

 <p>The callgraph is also not complete: in some cases it may be unable to
 determine some targets of a callsite. In this case,
 Callsite.hasUnknownTarget() will return true.

 <p>The CallGraph doesn't (currently) have functions for externally defined
 functions; however, callsites that target externs will have hasExternTarget()
 return true.

 <p>TODO(dcc): Have CallGraph (optionally?) include functions for externs.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested_class_summary">
<!--   -->
</a>
<h3>Nested Class Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>class&nbsp;</code></td>
<td class="colLast"><code><strong><a href="../../../../com/google/javascript/jscomp/CallGraph.Callsite.html" title="class in com.google.javascript.jscomp">CallGraph.Callsite</a></strong></code>
<div class="block">An inner class that represents call sites in the call graph.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>class&nbsp;</code></td>
<td class="colLast"><code><strong><a href="../../../../com/google/javascript/jscomp/CallGraph.Function.html" title="class in com.google.javascript.jscomp">CallGraph.Function</a></strong></code>
<div class="block">An inner class that represents functions in the call graph.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<td class="colLast"><code><strong><a href="../../../../com/google/javascript/jscomp/CallGraph.html#MAIN_FUNCTION_NAME">MAIN_FUNCTION_NAME</a></strong></code>
<div class="block">The name we give the main function.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../com/google/javascript/jscomp/CallGraph.html#CallGraph(com.google.javascript.jscomp.AbstractCompiler)">CallGraph</a></strong>(<a href="../../../../com/google/javascript/jscomp/AbstractCompiler.html" title="class in com.google.javascript.jscomp">AbstractCompiler</a>&nbsp;compiler)</code>
<div class="block">Creates a call graph object support both forward and backward lookups.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../com/google/javascript/jscomp/CallGraph.html#CallGraph(com.google.javascript.jscomp.AbstractCompiler, boolean, boolean)">CallGraph</a></strong>(<a href="../../../../com/google/javascript/jscomp/AbstractCompiler.html" title="class in com.google.javascript.jscomp">AbstractCompiler</a>&nbsp;compiler,
         boolean&nbsp;computeForwardGraph,
         boolean&nbsp;computeBackwardGraph)</code>
<div class="block">Creates a call graph object supporting the specified lookups.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>java.util.Collection&lt;<a href="../../../../com/google/javascript/jscomp/CallGraph.Callsite.html" title="class in com.google.javascript.jscomp">CallGraph.Callsite</a>&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../com/google/javascript/jscomp/CallGraph.html#getAllCallsites()">getAllCallsites</a></strong>()</code>
<div class="block">Returns a collection of all callsites in the call graph.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>java.util.Collection&lt;<a href="../../../../com/google/javascript/jscomp/CallGraph.Function.html" title="class in com.google.javascript.jscomp">CallGraph.Function</a>&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../com/google/javascript/jscomp/CallGraph.html#getAllFunctions()">getAllFunctions</a></strong>()</code>
<div class="block">Returns a collection of all functions (including the main function)
 in the call graph.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../com/google/javascript/jscomp/graph/DiGraph.html" title="class in com.google.javascript.jscomp.graph">DiGraph</a>&lt;<a href="../../../../com/google/javascript/jscomp/CallGraph.Function.html" title="class in com.google.javascript.jscomp">CallGraph.Function</a>,<a href="../../../../com/google/javascript/jscomp/CallGraph.Callsite.html" title="class in com.google.javascript.jscomp">CallGraph.Callsite</a>&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../com/google/javascript/jscomp/CallGraph.html#getBackwardDirectedGraph()">getBackwardDirectedGraph</a></strong>()</code>
<div class="block">Constructs and returns a directed graph where the nodes are functions and
 the edges are callsites connecting callees to callers.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../com/google/javascript/jscomp/CallGraph.Callsite.html" title="class in com.google.javascript.jscomp">CallGraph.Callsite</a></code></td>
<td class="colLast"><code><strong><a href="../../../../com/google/javascript/jscomp/CallGraph.html#getCallsiteForAstNode(com.google.javascript.rhino.Node)">getCallsiteForAstNode</a></strong>(<a href="../../../../com/google/javascript/rhino/Node.html" title="class in com.google.javascript.rhino">Node</a>&nbsp;callsiteNode)</code>
<div class="block">Returns the call graph Callsite object corresponding to the provided
 AST Token.CALL or Token.NEW node, or null if no such object exists.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../com/google/javascript/jscomp/graph/DiGraph.html" title="class in com.google.javascript.jscomp.graph">DiGraph</a>&lt;<a href="../../../../com/google/javascript/jscomp/CallGraph.Function.html" title="class in com.google.javascript.jscomp">CallGraph.Function</a>,<a href="../../../../com/google/javascript/jscomp/CallGraph.Callsite.html" title="class in com.google.javascript.jscomp">CallGraph.Callsite</a>&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../com/google/javascript/jscomp/CallGraph.html#getForwardDirectedGraph()">getForwardDirectedGraph</a></strong>()</code>
<div class="block">Constructs and returns a directed graph where the nodes are functions and
 the edges are callsites connecting callers to callees.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../com/google/javascript/jscomp/CallGraph.Function.html" title="class in com.google.javascript.jscomp">CallGraph.Function</a></code></td>
<td class="colLast"><code><strong><a href="../../../../com/google/javascript/jscomp/CallGraph.html#getFunctionForAstNode(com.google.javascript.rhino.Node)">getFunctionForAstNode</a></strong>(<a href="../../../../com/google/javascript/rhino/Node.html" title="class in com.google.javascript.rhino">Node</a>&nbsp;functionNode)</code>
<div class="block">Returns the call graph Function object corresponding to the provided
 AST Token.FUNCTION node, or null if no such object exists.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../com/google/javascript/jscomp/CallGraph.Function.html" title="class in com.google.javascript.jscomp">CallGraph.Function</a></code></td>
<td class="colLast"><code><strong><a href="../../../../com/google/javascript/jscomp/CallGraph.html#getMainFunction()">getMainFunction</a></strong>()</code>
<div class="block">Returns a Function object representing the "main" global function.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../com/google/javascript/jscomp/CallGraph.Function.html" title="class in com.google.javascript.jscomp">CallGraph.Function</a></code></td>
<td class="colLast"><code><strong><a href="../../../../com/google/javascript/jscomp/CallGraph.html#getUniqueFunctionWithName(java.lang.String)">getUniqueFunctionWithName</a></strong>(java.lang.String&nbsp;desiredName)</code>
<div class="block">Finds a function with the given name.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../com/google/javascript/jscomp/CallGraph.html#process(com.google.javascript.rhino.Node, com.google.javascript.rhino.Node)">process</a></strong>(<a href="../../../../com/google/javascript/rhino/Node.html" title="class in com.google.javascript.rhino">Node</a>&nbsp;externsRoot,
       <a href="../../../../com/google/javascript/rhino/Node.html" title="class in com.google.javascript.rhino">Node</a>&nbsp;jsRoot)</code>
<div class="block">Builds a call graph for the given externsRoot and jsRoot.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_detail">
<!--   -->
</a>
<h3>Field Detail</h3>
<a name="MAIN_FUNCTION_NAME">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MAIN_FUNCTION_NAME</h4>
<pre>public static final&nbsp;java.lang.String MAIN_FUNCTION_NAME</pre>
<div class="block">The name we give the main function.</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#com.google.javascript.jscomp.CallGraph.MAIN_FUNCTION_NAME">Constant Field Values</a></dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="CallGraph(com.google.javascript.jscomp.AbstractCompiler, boolean, boolean)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>CallGraph</h4>
<pre>public&nbsp;CallGraph(<a href="../../../../com/google/javascript/jscomp/AbstractCompiler.html" title="class in com.google.javascript.jscomp">AbstractCompiler</a>&nbsp;compiler,
         boolean&nbsp;computeForwardGraph,
         boolean&nbsp;computeBackwardGraph)</pre>
<div class="block">Creates a call graph object supporting the specified lookups.

 At least one (and possibly both) of computeForwardGraph and
 computeBackwardGraph must be true.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>compiler</code> - The compiler</dd><dd><code>computeForwardGraph</code> - Should the call graph allow lookup of the target
        functions a given callsite could call?</dd><dd><code>computeBackwardGraph</code> - Should the call graph allow lookup of the
        callsites that could call a given function?</dd></dl>
</li>
</ul>
<a name="CallGraph(com.google.javascript.jscomp.AbstractCompiler)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>CallGraph</h4>
<pre>public&nbsp;CallGraph(<a href="../../../../com/google/javascript/jscomp/AbstractCompiler.html" title="class in com.google.javascript.jscomp">AbstractCompiler</a>&nbsp;compiler)</pre>
<div class="block">Creates a call graph object support both forward and backward lookups.</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="process(com.google.javascript.rhino.Node, com.google.javascript.rhino.Node)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>process</h4>
<pre>public&nbsp;void&nbsp;process(<a href="../../../../com/google/javascript/rhino/Node.html" title="class in com.google.javascript.rhino">Node</a>&nbsp;externsRoot,
           <a href="../../../../com/google/javascript/rhino/Node.html" title="class in com.google.javascript.rhino">Node</a>&nbsp;jsRoot)</pre>
<div class="block">Builds a call graph for the given externsRoot and jsRoot.
 This method must not be called more than once per CallGraph instance.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../com/google/javascript/jscomp/CompilerPass.html#process(com.google.javascript.rhino.Node, com.google.javascript.rhino.Node)">process</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../com/google/javascript/jscomp/CompilerPass.html" title="interface in com.google.javascript.jscomp">CompilerPass</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>externsRoot</code> - Top of external JS tree</dd><dd><code>jsRoot</code> - Top of JS tree</dd></dl>
</li>
</ul>
<a name="getFunctionForAstNode(com.google.javascript.rhino.Node)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFunctionForAstNode</h4>
<pre>public&nbsp;<a href="../../../../com/google/javascript/jscomp/CallGraph.Function.html" title="class in com.google.javascript.jscomp">CallGraph.Function</a>&nbsp;getFunctionForAstNode(<a href="../../../../com/google/javascript/rhino/Node.html" title="class in com.google.javascript.rhino">Node</a>&nbsp;functionNode)</pre>
<div class="block">Returns the call graph Function object corresponding to the provided
 AST Token.FUNCTION node, or null if no such object exists.</div>
</li>
</ul>
<a name="getMainFunction()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMainFunction</h4>
<pre>public&nbsp;<a href="../../../../com/google/javascript/jscomp/CallGraph.Function.html" title="class in com.google.javascript.jscomp">CallGraph.Function</a>&nbsp;getMainFunction()</pre>
<div class="block">Returns a Function object representing the "main" global function.</div>
</li>
</ul>
<a name="getAllFunctions()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAllFunctions</h4>
<pre>public&nbsp;java.util.Collection&lt;<a href="../../../../com/google/javascript/jscomp/CallGraph.Function.html" title="class in com.google.javascript.jscomp">CallGraph.Function</a>&gt;&nbsp;getAllFunctions()</pre>
<div class="block">Returns a collection of all functions (including the main function)
 in the call graph.</div>
</li>
</ul>
<a name="getUniqueFunctionWithName(java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getUniqueFunctionWithName</h4>
<pre>public&nbsp;<a href="../../../../com/google/javascript/jscomp/CallGraph.Function.html" title="class in com.google.javascript.jscomp">CallGraph.Function</a>&nbsp;getUniqueFunctionWithName(java.lang.String&nbsp;desiredName)</pre>
<div class="block">Finds a function with the given name. Throws an exception if
 there are no functions or multiple functions with the name. This is
 for testing purposes only.</div>
</li>
</ul>
<a name="getCallsiteForAstNode(com.google.javascript.rhino.Node)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCallsiteForAstNode</h4>
<pre>public&nbsp;<a href="../../../../com/google/javascript/jscomp/CallGraph.Callsite.html" title="class in com.google.javascript.jscomp">CallGraph.Callsite</a>&nbsp;getCallsiteForAstNode(<a href="../../../../com/google/javascript/rhino/Node.html" title="class in com.google.javascript.rhino">Node</a>&nbsp;callsiteNode)</pre>
<div class="block">Returns the call graph Callsite object corresponding to the provided
 AST Token.CALL or Token.NEW node, or null if no such object exists.</div>
</li>
</ul>
<a name="getAllCallsites()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAllCallsites</h4>
<pre>public&nbsp;java.util.Collection&lt;<a href="../../../../com/google/javascript/jscomp/CallGraph.Callsite.html" title="class in com.google.javascript.jscomp">CallGraph.Callsite</a>&gt;&nbsp;getAllCallsites()</pre>
<div class="block">Returns a collection of all callsites in the call graph.</div>
</li>
</ul>
<a name="getForwardDirectedGraph()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getForwardDirectedGraph</h4>
<pre>public&nbsp;<a href="../../../../com/google/javascript/jscomp/graph/DiGraph.html" title="class in com.google.javascript.jscomp.graph">DiGraph</a>&lt;<a href="../../../../com/google/javascript/jscomp/CallGraph.Function.html" title="class in com.google.javascript.jscomp">CallGraph.Function</a>,<a href="../../../../com/google/javascript/jscomp/CallGraph.Callsite.html" title="class in com.google.javascript.jscomp">CallGraph.Callsite</a>&gt;&nbsp;getForwardDirectedGraph()</pre>
<div class="block">Constructs and returns a directed graph where the nodes are functions and
 the edges are callsites connecting callers to callees.

 It is safe to call this method on both forward and backwardly constructed
 CallGraphs.</div>
</li>
</ul>
<a name="getBackwardDirectedGraph()">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getBackwardDirectedGraph</h4>
<pre>public&nbsp;<a href="../../../../com/google/javascript/jscomp/graph/DiGraph.html" title="class in com.google.javascript.jscomp.graph">DiGraph</a>&lt;<a href="../../../../com/google/javascript/jscomp/CallGraph.Function.html" title="class in com.google.javascript.jscomp">CallGraph.Function</a>,<a href="../../../../com/google/javascript/jscomp/CallGraph.Callsite.html" title="class in com.google.javascript.jscomp">CallGraph.Callsite</a>&gt;&nbsp;getBackwardDirectedGraph()</pre>
<div class="block">Constructs and returns a directed graph where the nodes are functions and
 the edges are callsites connecting callees to callers.

 It is safe to call this method on both forward and backwardly constructed
 CallGraphs.</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../com/google/javascript/jscomp/ByPathWarningsGuard.html" title="class in com.google.javascript.jscomp"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../com/google/javascript/jscomp/CallGraph.Callsite.html" title="class in com.google.javascript.jscomp"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?com/google/javascript/jscomp/CallGraph.html" target="_top">Frames</a></li>
<li><a href="CallGraph.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested_class_summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
